package swairlines.bd;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import swairlines.gui.TelaCadFuncionario;
import swairlines.gui.TelaTabelaVoos;
import swairlines.modelo.Endereco;
import swairlines.modelo.Funcionario;

public class FuncionarioBD {

	public boolean insere(Funcionario f1, Endereco e1){
		
		try {
			ConexaoBD cbd = new ConexaoBD();
			boolean verificaExecutar = cbd.executar("insert into sw_airlines.funcionario (cpf, nome, sexo, rg, cargo, data_de_nascimento, telefone_celular, telefone_residencial, nacionalidade, estado_civil, numero, rua, bairro, cidade, estado) " +
					"values('" + f1.getCpf() +"','" + f1.getNome() +"','" + f1.getSexo() + "','" + f1.getRg() +"','" + f1.getCargo() +"','" + f1.getDataDeNascimento() +"','" + f1.getTelefoneCelular() +"','" + f1.getTelefoneResidencial() +"','" + f1.getNacionalidade() +"','" + f1.getEstadoCivil() + "','" + e1.getNumero() + "','" + e1.getRua() + "','" + e1.getBairro() + "','" + e1.getCidade() + "','" + e1.getEstado() + "');");
			if (verificaExecutar){
				return true;
			}
		}catch (SQLException ex) {
			Logger.getLogger(TelaCadFuncionario.class.getName()).log(Level.SEVERE, null, ex);
		}
		return false;

	}
	
	public boolean altera(Funcionario f1, Endereco e1){

		try {
			ConexaoBD cbd = new ConexaoBD();
			cbd.executar("update sw_airlines.funcionario set cpf='" + f1.getCpf() +"' , nome='" + f1.getNome() +"', sexo='" + f1.getSexo() +"', rg='" + f1.getRg() +"', cargo='" + f1.getCargo() +"', data_de_nascimento='" + f1.getDataDeNascimento()  +"', telefone_celular='" + f1.getTelefoneCelular() +"', telefone_residencial='" + f1.getTelefoneResidencial() +"', nacionalidade='" + f1.getNacionalidade() +"', estado_civil='" + f1.getEstadoCivil() +"', numero='" + e1.getNumero() +"', rua='" + e1.getRua() +"', bairro='" + e1.getBairro() +"', cidade='" + e1.getCidade() +"', estado='" + e1.getEstado() +"' where cpf='" + f1.getCpf() +"';");
			return true;
		} catch (SQLException ex) {
			Logger.getLogger(TelaCadFuncionario.class.getName()).log(Level.SEVERE, null, ex);
		}
		return false;
	}
	
	public void exclui(Funcionario f1){

		try {
			ConexaoBD cbd = new ConexaoBD();
			cbd.executar("delete from sw_airlines.funcionario where cpf = '" + f1.getCpf() +"';");
		} catch (SQLException ex) {
			Logger.getLogger(TelaCadFuncionario.class.getName()).log(Level.SEVERE, null, ex);
		}
	}
	public Funcionario buscar(String cpf){
		Funcionario f = new Funcionario();
		Endereco e = new Endereco();
		boolean veficifica = false;
		try {			
			ConexaoBD cbd = new ConexaoBD();
			Connection con = cbd.abreConexao();
			PreparedStatement stm = con.prepareStatement("SELECT * FROM sw_airlines.funcionario where sw_airlines.funcionario.cpf = '" + cpf +"';");
			ResultSet rs = stm.executeQuery();
			
			while (rs.next()) {				
				f.setCpf(rs.getString("cpf"));
				f.setNome(rs.getString("nome"));
				f.setSexo(rs.getString("sexo"));
				f.setRg(rs.getString("rg"));
				f.setCargo(rs.getString("cargo"));
				f.setDataDeNascimento(rs.getString("data_de_nascimento"));
				f.setTelefoneCelular(rs.getString("telefone_celular"));
				f.setTelefoneResidencial(rs.getString("telefone_residencial"));
				f.setNacionalidade(rs.getString("nacionalidade"));
				f.setEstadoCivil(rs.getString("estado_civil"));
				e.setNumero(rs.getString("numero"));
				e.setRua(rs.getString("rua"));
				e.setBairro(rs.getString("bairro"));
				e.setCidade(rs.getString("cidade"));
				e.setEstado(rs.getString("estado"));
				veficifica = true;
			}			
			rs.close();
			stm.close();
			con.close();
			f.setEndereco(e);
			if (veficifica){
				return f;	
			}else{
				f.setCpf("CPF inválido");
				return f;
			}

		} catch(SQLException ex) {
			Logger.getLogger(TelaTabelaVoos.class.getName()).log(Level.SEVERE, null, ex);
			return null;
			
		}

	}
	public ArrayList<Funcionario> buscarTodos(){
		ArrayList<Funcionario> funcionarios = new ArrayList<Funcionario>();
		try {			
			ConexaoBD cbd = new ConexaoBD();
			Connection con = cbd.abreConexao();
			PreparedStatement stm = con.prepareStatement("SELECT * FROM sw_airlines.funcionario;");
			ResultSet rs = stm.executeQuery();
			
			while (rs.next()) {				
				Funcionario f = new Funcionario();
				f.setCpf(rs.getString("cpf"));
				f.setNome(rs.getString("nome"));
				f.setSexo(rs.getString("sexo"));
				f.setRg(rs.getString("rg"));
				f.setCargo(rs.getString("cargo"));
				f.setDataDeNascimento(rs.getString("data_de_nascimento"));
				f.setTelefoneCelular(rs.getString("telefone_celular"));
				f.setTelefoneResidencial(rs.getString("telefone_residencial"));
				f.setNacionalidade(rs.getString("nacionalidade"));
				f.setEstadoCivil(rs.getString("estado_civil"));
				f.setEstadoCivil(rs.getString("numero"));
				f.setEstadoCivil(rs.getString("rua"));
				f.setEstadoCivil(rs.getString("bairro"));
				f.setEstadoCivil(rs.getString("cidade"));
				f.setEstadoCivil(rs.getString("estado"));
				funcionarios.add(f);

			}			
			rs.close();
			stm.close();
			con.close();			
			
			return funcionarios;			
			
		} catch(SQLException e) {
			Logger.getLogger(TelaTabelaVoos.class.getName()).log(Level.SEVERE, null, e);
			return null;
			
		}

	}

}//Fim da Classe
